#include "sub.h"

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <iostream>

static void sigint_handler(int signum) {
    printf("%s %s %d 捕获到 Ctrl+C (信号值: %d)\n", __FILE__, __FUNCTION__, __LINE__, signum);
    raise(signum);  // 重新抛出信号，让主进程也能捕获到
}

void SubInit(void)
{
    struct sigaction sa;
    sa.sa_handler = sigint_handler;  // 指定回调函数
    sigemptyset(&sa.sa_mask);        // 清空信号掩码
    sa.sa_flags = SA_RESETHAND;      // 触发后自动设置为SIG_DFL

    // 注册信号处理
    if (sigaction(SIGINT, &sa, NULL) == -1) {
        perror("Sub sigaction 注册失败");
    }
}
